<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ItemDistribuicaoMapper
 *
 * @author felipe
 */
class App_Model_ItemDistribuicaoMapper extends Voitech_Mapper{
    
    private $coDistribuicao;
    
    public function __construct(App_Model_ItemDistribuicao $obModel,$coDistribuicao){
        $this->obModel = $obModel;
        $this->coDistribuicao = (int) $coDistribuicao;
    }
    
    public function buscarPorId() {
        $obRow = App_Model_Db_ItemDistribuicao::build()->buscarPorId($this->obModel->getObProduto()->getCoProduto(),$this->coDistribuicao);
        if(empty($obRow))
        {
            return;
        }
        $this->carregar($obRow->current());               
    }
    
    public function carregar(stdClass $obRow) {
        $obProdutoMapper = new App_Model_ProdutoMapper(new App_Model_Produto());               
        $this->obModel->setNuQuantidadeSolicitada($obRow->nu_quantidade_solicitada)
                      ->setNuQuantidadeAtendida($obRow->nu_quantidade_atendida)
                      ->setObProduto($obProdutoMapper->carregar($obRow));
        return $this->obModel;
    }
    
    public function cadastrar() {
        $arItemDistribuicao = $this->retornarArrayPopulado();
        $arItemDistribuicao['co_distribuicao'] = $this->coDistribuicao;
        return App_Model_Db_ItemDistribuicao::build()->insert($arItemDistribuicao);
    }
    
    public function alterar(){
        $arItemDistribuicao = $this->retornarArrayPopulado();
        return App_Model_Db_ItemDistribuicao::build()->update($arItemDistribuicao,App_Model_Db_ItemDistribuicao::build()->select()
                                                                                                     ->where('co_produto = ?',$this->obModel->getObProduto()->getCoProduto())
                                                                                                     ->where('co_distribuicao =?',$this->coDistribuicao));
    }
    
    public function ativar() {
        $arItemDistribuicao = array('st_ativo'=>'S');
        return App_Model_Db_ItemDistribuicao::build()->update($arItemDistribuicao,App_Model_Db_ItemDistribuicao::build()->select()
                                                                                                     ->where('co_produto = ?',$this->obModel->getObProduto()->getCoProduto())
                                                                                                     ->where('co_distribuicao =?',$this->coDistribuicao));
    }
    
    public function desativar() {
        $arItemDistribuicao = array('st_ativo'=>'N');
        return App_Model_Db_ItemDistribuicao::build()->update($arItemDistribuicao
                                                      ,App_Model_Db_ItemDistribuicao::build()->select()
                                                                                      ->where('co_produto = ?',$this->obModel->getObProduto()->getCoProduto())
                                                                                      ->where('co_distribuicao =?',$this->coDistribuicao));
    }
    
    public function retornarArrayPopulado() {
        $arrItemDistribuicao = array('co_produto'=>$this->obModel->getObProduto()->getCoProduto()
                               ,'nu_quantidade_solicitada'=>$this->obModel->getNuQuantidadeSolicitada()
                               ,'nu_quantidade_atendida'=>$this->obModel->getNuQuantidadeAtendida()
                              );
        return $arrItemDistribuicao;
   }
}
